紙本電子發票有兩種查詢方式,一個是輸入發票號碼、驗證碼和發票日期,而另一種則是用掃描紙本發票上面的 QRcode。這一篇會先介紹手動輸入的方式。
財政部電子發票應用規格書有提到, 一維條碼是 BarCode、二維條碼是 QRcode

對照 source code 發現大小寫有一點點不一樣,不過不影響使用體驗。
依照下面 function 我們可以得知查詢紙本電子發票要輸入三個參數
(我這邊有個想法,其實發票期別應該可以透過發票日期去產生,應該就不用再輸入一次。但現在還是要輸入)
def get_invoice_detail(
        self,
        barcode_type: Literal["QRCode", "Barcode"],
        invoice_number: str,
        invoice_date: date,
        invoice_random: str,
        invoice_term: Union[str, None] = None,
        invoice_encrypt: Union[str, None] = None,
        seller_id: Union[str, None] = None,
    ):
        """
        查詢發票明細 v0.6
        `invoice_random`: 錯誤將僅回傳發票表頭,正確將回傳完整明細
        `barcode_type`: "Barcode"
        `invoice_number`: 發票號碼
        `invoice_date`: 發票日期
        `invoice_random`: 發票隨機碼 (4位)
        `invoice_term`: 發票期別, 3 位民國年+ 2 位雙數月份,如:11006
        or
        `barcode_type`: "QRCode"
        `invoice_number`: 發票號碼
        `invoice_date`: 發票日期
        `invoice_random`: 發票隨機碼 (4位)
        `invoice_encrypt`: 發票檢驗碼 (左側QRCode中,24位)
        `seller_id`: 商家統編
        """
這邊做了個小實驗
該筆發票並無開立」

該筆發票並無開立」
該筆發票並無開立」
基本上可以得知,如果發票號碼、發票日期、發票期別打錯的話,會得到「該筆發票並無開立」(發票),只有隨機碼打錯回傳不一樣。在後續設計上,可以通知使用者發票的隨機碼是否有輸入錯誤。
以上完整程式碼可參考連結